package com.alisls.demo.springcloud.service.user.dto.client;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * OAuth客户端DTO
 *
 * @author Ke Wang
 * @date 2020/10/31
 */
@NoArgsConstructor
@Getter
@Setter
@ToString
public class OAuthClientDetailDTO implements Serializable {

    /**
     * 客户端ID
     */
    @NotBlank(message = "客户端ID不能为空！")
    @Size(min = 3, max = 50, message = "长度在3~50个字符之间")
    private String clientId;

    /**
     * 授权模式
     * 1）authorization_code 授权码模式
     * 2）password 密码模式
     * 3）implicit 简化模式
     * 4）client_credentials 客户端模式
     * 5）refresh_token  刷新Token
     */
    @NotBlank(message = "授权模式不能为空！")
    @Size(min = 3, max = 50, message = "长度在3~50个字符之间")
    private String authorizedGrantTypes;

    /**
     * 资源ID
     */
    @NotBlank(message = "资源ID不能为空！")
    @Size(min = 3, max = 50, message = "长度在3~50个字符之间")
    private String resourceIds;

    /**
     * 范围
     */
    private String scope;

    /**
     * 权限
     */
    private String authorities;

    /**
     * Access Token的有效期
     */
    @Max(value = 36000L, message = "最大不超过36000毫秒(1小时)")
    private Integer accessTokenValidity;

    /**
     * RefreshToken的有效期
     */
    @Max(value = 36000L, message = "最大不超过36000毫秒(1小时)")
    private Integer refreshTokenValidity;

    /**
     * 是否自动授权
     */
    private String autoapprove;

    /**
     * Web服务器重定向地址
     */
    private String webServerRedirectUri;

    /**
     * 额外信息
     */
    private String additionalInformation;

}
